/*!Cette classe définit une transition : une transition est un ensemble de caractères menant à un état DONNE. La notion de transitions n'a aucune signification sans état associé. */

#ifndef H_transitions
#define H_transitions

#include <vector>
#include <cstdio>
#include <iostream.h>

class transitions{

	private :

		///booléen marquant si une epsilon-transition mène à l'état associé
		bool epsilon;

		/*!vector de 256 cases valant vrai pour les codes ascii des lettres menant à l'état associé*/
		std::vector<bool> trans;

	public :

		///initialise un objet de type Transitions avec des zéros partout
		transitions();

		///initialise un objet de type Transitions avec un vector de booléens
		transitions(std::vector<bool> entiers);

		/*!initialise un objet de type Transitions avec un booléen et un vector de booléens*/
		transitions(bool epsilon, std::vector<bool> entiers);

		///initialise un objet de type Transitions avec des uns partout
		void transitions_puits();

		/*!affiche une transition, mais c'est loin d'être l'affichage que vous pensez...*/
		void affichage();

		///accesseur renvoyant la valeur d'epsilon
		bool get_epsilon();

		/*!accesseur renvoyant vrai si l'état associé possède une transition pour le caractère de code ascii i*/
		bool get_trans(unsigned char i);

		///mutateur mettant à jour le champ epsilon
		void set_epsilon(bool val);

		///mutateur modifiant la transition pour le caractère de code ascii i
		void set_trans(unsigned char i, bool val);
};

#endif
